package com.biz.primus.model.promotion.vo;

import com.biz.primus.model.promotion.enums.PromotionGiftTypeEnum;
import com.biz.primus.model.promotion.enums.PromotionPointGiftTypeEnum;
import com.biz.primus.model.promotion.enums.PromotionTargetLimitTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 买赠满赠活动Vo
 *
 * @author david-liu
 */
@Getter
@Setter
@ApiModel(value = "买赠满赠活动Vo")
public class PurchaseGiftPromotionVo extends BasePromotionVo {
    private static final long serialVersionUID = -3897654093446967521L;

    @ApiModelProperty(value = "促销方式枚举(按照商品金额/商品数量)")
    private PromotionTargetLimitTypeEnum limitType;

    @ApiModelProperty(value = "限制金额")
    private Integer limitAmount;

    @ApiModelProperty(value = "限制数量")
    private Integer limitQuantity;

    @ApiModelProperty(value = "赠品类型")
    private PromotionGiftTypeEnum giftType;

    @ApiModelProperty(value = "赠送商品数量")
    private Integer giftProductQuantity;

    @ApiModelProperty(value = "赠品ID集合")
    private List<Long> giftProductIds;

    @ApiModelProperty(value = "是否限制赠送商品的库存")
    private Boolean limitGiftProductStock;

    @ApiModelProperty(value = "赠送积分类型(按照数量增长/按照倍数增长)")
    private PromotionPointGiftTypeEnum pointGiftType;

    @ApiModelProperty(value = "赠送积分数量")
    private Integer pointQuantity;

    @ApiModelProperty(value = "积分增长倍数")
    private Integer pointIncreaseTimes;

    @ApiModelProperty(value = "用户是否只能参与一次")
    private Boolean userOnceGainLimit = false;

    @ApiModelProperty(value = "赠送券集合")
    private List<PromotionCouponVo> coupons;

    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
    }

}
